package safe_lru

import "bulgat.top/go_cache/utils"

type ByteView struct {
	data []byte
}

func NewByteView(data []byte) ByteView {
	return ByteView{data: utils.Clone(data)}
}

// Len returns the view's length
func (v ByteView) Len() int64 {
	return int64(len(v.data))
}

// String returns the data as a string, making a copy if necessary.
func (v ByteView) String() string {
	return string(v.data)
}

// Clone returns a deep copy of the ByteView
func (v ByteView) Clone() ByteView {
	return ByteView{data: utils.Clone(v.data)}
}

// ByteSlice returns a copy of the data as a byte slice.
func (v ByteView) ByteSlice() []byte {
	return utils.Clone(v.data)
}
